'''

这个里面放页面的基础操作，比如：打开浏览器，点击，输入值，窗口的切换等等
'''
import time

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.remote.webelement import WebElement
from selenium.webdriver.support.wait import WebDriverWait


class Base:
    #假设，我们浏览器驱动对象放到成员变量里面
    def __init__(self,driver,url):
        self.__driver = driver      # 浏览器驱动对象
        self.__driver.get(url)      # 打开浏览器
        self.__driver.maximize_window()     # 最大化窗口
    # 查找元素
    # loc: 元组里面两个值，一个是定位方式，一个是值
    #  -> WebElement ：告诉调用者，这个方法返回的是一个元素
    def __element_find__Wait(self,loc) -> WebElement:         # loc是元组，元组里面有两个值，第一个值是定位方式，第二个值是值
        # self.__driver.find_element(*loc) #  *loc是元组解包
        return WebDriverWait(self.__driver,10).until(lambda x:x.find_element(*loc))

    # 往输入框输入内容
    def element_send_keys(self,loc,value):
        self.__element_find__Wait(loc).send_keys(value)

    # 点击
    def element_click(self,loc):
        self.__element_find__Wait(loc).click()

    # 获取当前页面的url
    def get_current_url(self):
        return self.__driver.current_url


    # 获取文本信息
    def get_text(self,loc):
        return self.__element_find__Wait(loc).text

    # 关闭浏览器对象
    def quit(self):
        self.__driver.quit()

    # def element_assert(self,loc,value)

# if __name__ == '__main__':
#     base = Base(webdriver.Edge(),'https://www.baidu.com/')
#     base.element_send_keys((By.CSS_SELECTOR,'#kw'),'wawawawaw')
#     time.sleep(3)
#     base.quit()